'''
* This is the projet for Brtc LlmOps Platform
* @Author Leon-liao <liaosiliang@alltman.com>
* @Description //TODO 
* @File: 3_study_bind_lambda.py
* @Time: 2025/7/27
* @All Rights Reserve By Brtc
'''
import json
import random

from langchain_core.runnables import RunnableLambda

"""4、Runnable组件动态添加默认调用参数   a.2、解决多参 RunnableLambda 函数传参"""
def get_weather(location: str, unit:str, three:str) -> str:
    """根据传入的位置 + 温度获取对应的天气"""
    print("location:", location)
    print("unit:", unit)
    print("three:", three)
    return f"{location}天气为{random.randint(24,40)} {unit} "

get_weather_runable = RunnableLambda(get_weather).bind(unit="广州", three="jjjj")

""" 
使用场景:
query:请问长沙的天气怎么样？----> 长沙  | get_weather_runable 放在后面 可以调用工具
get_memerory|promp|llm 放在前面可以检索信息
我们现在
第一步 构建提示词， 第二步骤 构建模型  第三步构建 输出解析器
如何填写提示词？
"你是我的机器人我要你帮我回我我的问题， 你的参考信息 如下:
======
{history}# 不同用户的 历史消息是不一样的
=======
{retriever}# 不同用户需要检索的知识库也是不一样的， 必须 通过参数的方式去确定用户的  信息、
"

"""

print(get_weather_runable.invoke({"location": "O"}))

